import router from './routes';

import store from './store';
import {getToken} from "./utils/storage";

const whiteList = ['/login', 'auth'];


router.beforeEach(async (to, from, next) => {
  // 有没有token
  let hasToken = getToken();

  // 如果登录过了   /login 自动跳转到首页
  if (hasToken) {
    // 登录
    if (to.path.startsWith('/login')) {
      next({path: '/'});// 跳转到首页
    } else {
      // 检查token
      // 请求数据 token 过期 重定向到登录页
      // roleId
      let role = store.getters.roles;
      if (role) {
        next();
      } else { // 怎么处理 async 和 await 的错误
        try { // 发送请求 获取角色
          await store.dispatch('users/getInfo');// 角色获取到了

          // 在仓库中处理关于角色的问题
          let filterRoutes = await store.dispatch('permission/generatorRoutes');// 进行路由的筛选
          // 所有路由
          // debugger;
          // 动态添加
          router.addRoutes(filterRoutes);// 动态加载路由
          next();
        } catch (e) {
          // 清除token
          next(`/login?redirect=${to.path}`)
        }
      }
    }
  } else {
    // 设置白名单
    if (whiteList.indexOf(to.path) !== -1) {
      next();
    } else {
      next(`/login?redirect=${to.path}`);// 把想要跳转的页面传递过去
    }
  }
});
